package service;

import pojo.Source;

import java.util.List;
import java.util.Map;

public interface SourceService {

    /**
     * 获取所有医生的出诊号源信息
     * @return 号源信息列表
     */
    List<Source> getAllSources();

    /**
     * 根据日期获取号源信息
     * @param date 查询日期
     * @return 号源信息列表
     */
    List<Source> getSourcesByDate(String date);

    /**
     * 根据科室获取号源信息
     * @param departmentName 科室名称
     * @return 号源信息列表
     */
    List<Source> getSourcesByDepartment(String departmentName);

    /**
     * 更新剩余号源数量（挂号操作）
     * @param doctorId 医生ID
     * @param date 日期
     * @param morningWork 上午出诊情况
     * @return 更新结果
     */
    int updateRemainingSources(String doctorId, String date, String morningWork);

    /**
     * 获取更新后的号源信息
     * @param doctorId 医生ID
     * @param date 日期
     * @return 号源信息
     */
    Source getUpdatedSource(String doctorId, String date);

    /**
     * 统计各科室的可预约号源数量
     * @param date 查询日期
     * @return 科室统计结果
     */
    List<Map<String, Object>> countSourcesByDepartment(String date);

    /**
     * 获取指定医生的出诊时间表
     * @param doctorId 医生ID
     * @return 出诊时间表
     */
    List<Source> getDoctorSchedule(String doctorId);
}